import request from "@/utils/request"

//sku的图片列表中每一项值的类型
export interface skuImageItemType {
  id?: number
  skuId?: number //所在的skuid
  imgName: string //图片名称
  imgUrl: string //图片地址
  spuImgId: number //在spu中的id
  isDefault: string //是否是当前的默认图片
}

//sku图片列表的类型
export type skuImageListType = skuImageItemType[]

//sku平台属性值列表中每一项的类型
export interface skuAttrValueItemType {
  id?: number
  attrId: number //当前平台属性值所在的平台属性在完整的平台属性列表中的id
  valueId: number //当前平台属性值在当前属性的所有属性值中的id
  skuId?: number //当前的skuid
  attrName?: string //当前平台属性名
  valueName?: string //当前的平台属性值
}

//sku平台属性值列表的类型
export type skuAttrValueListType = skuAttrValueItemType[]

//sku销售属性值列表中每一项的类型
export interface skuSaleAttrValueItemType {
  id?: number
  skuId?: number //当前所在的skuId
  spuId?: number //当前sku所在的spuid
  saleAttrValueId: number //当前销售属性值在他的完整销售属性值列表中的id
  saleAttrId: number //当前销售属性在完整的销售属性列表中的id
  saleAttrName?: string //销售属性名称
  saleAttrValueName?: string //销售属性值的名称
}

//sku销售属性值列表的类型
export type skuSaleAttrValueListType = skuSaleAttrValueItemType[]

//skuInfo的类型
export interface skuInfoType {
  id?: number
  spuId: number //所在的spuId
  price: number //当前sku的价格
  skuName: string //当前sku的名称
  skuDesc: string //当前sku的描述
  weight: string //当前sku的重量
  tmId: number //当前sku所在的品牌id
  category3Id: number //当前sku所在的三级分类的id
  skuDefaultImg: string //当前sku的默认的图片
  isSale: number //当前sku是否上架
  createTime?: string //当前sku的创建时间
  skuImageList: skuImageListType | null //当前sku图片列表
  skuAttrValueList: skuAttrValueListType | null //当前sku属性值列表
  skuSaleAttrValueList: skuSaleAttrValueListType | null //当前sku销售属性值列表
}

//skuInfo组成的数据列表类型
export type skuInfoListType = skuInfoType[]

//所有的sku分页列表数据的类型
export interface skuPageListType {
  records: skuInfoListType
  total: number
  size: number
  current: number
  searchCount: boolean
  pages: number
}

//1. 给某一个spu新增sku
export const reqAddSku = (skuInfo: skuInfoType) => {
  return request.post<null, null>(`/admin/product/saveSkuInfo`, skuInfo)
}

//2.查看某个spu下的所有的sku列表(不完整信息)
export const reqSkuListBySpuId = (spuId: number) => {
  return request.get<null, skuInfoListType>(
    `/admin/product/findBySpuId/${spuId}`
  )
}

//3.上架sku接口
export const reqOnSale = (skuId: number) => {
  return request.get(`/admin/product/onSale/${skuId}`)
}

//4.下架sku接口
export const reqCancelSale = (skuId: number) => {
  return request.get(`/admin/product/cancelSale/${skuId}`)
}

// 5.删除某个sku
export const reqDeleteSku = (skuId: number) => {
  return request.delete(`/admin/product/deleteSku/${skuId}`)
}

//6.查看某个sku的完整详细信息
export const reqSkuDetail = (skuId: number) => {
  return request.get<null, skuInfoType>(`/admin/product/getSkuById/${skuId}`)
}

//7.获取所有的sku分页列表
export const reqSkuPageList = (page: number, limit: number) => {
  return request.get<null, skuPageListType>(
    `/admin/product/list/${page}/${limit}`
  )
}
